1. Technical Field
The present invention relates to multiprocessing computer systems in general, and, in particular, to a method for managing workloads in a multiprocessing computer system.
2. Description of Related Art
In multiprocessing computer systems, the processing cost of accessing data in memory is dependent on the physical location of the memory in relation to the processor that accesses it. Multiple threads that frequently access and modify areas of memory, which are shared with other threads, can benefit from all being physically close together. This reduces the amount of cross-node traffic required to obtain cache lines that exist in the cache of a remote processor. However, placing workloads to increase such cache affinity conflicts with the more general desire to balance work across all available resources of the entire computer system. Furthermore, placing all work onto a single node and allocating all memory locally will increase cache affinity, but in general will not provide good performance for all workloads, due to the increased contention for resources on that node.
Some automatic optimizing systems are arranged to attempt to predict the best placement of workloads based on workload characteristics such as affinity measures, workload size, or resource contention. Such predictive optimizers enable the quick placement of workloads and correspondingly quick performance gains. Workloads that cannot benefit are not affected unless indirectly as a result of changes to associated or linked workloads.
However, the analysis performed by predictive optimizers tend to be complex since there are many possible placements of workloads on different types of domains, complex performance characteristics. In addition, it is difficult to predict the results of workload placements when making large changes or to identify the effects of other workloads. Testings of predictive optimizers are complex and it is difficult to determine that the system is robust. Thus, adequate testing of predictive optimizers needs to be extensive to produce an acceptable level of confidence. Furthermore, a large number of tests may need running every time the heuristics are changed. Predictive optimizers are generally conservative in their optimizations to avoid the possibility of degrading performance.
Other automatic optimizing systems attempt to optimize the placement of workloads through search or experimentation. Such search-based optimizers are able to arrive at near-optimal workload placement given sufficient time and stable performance workloads. Search-based optimizers are relatively simple systems. However, search-based optimizers have high run-time cost due to the high number of possible placement combinations that may require analysis and which increase exponentially with number of workloads. Search-based optimizers may also be disruptive because as long as experimentation occurs, other workloads, as well as the workload under experimentation, may be adversely affected. Search-based optimizers are also reliant on accurate performance measures. Consequently it would be desirable to provide an improved method for managing workloads in a multiprocessing computer system.